package com.readpost.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import java.util.Map;

public class JWTUtil {

    private static final String KEY = "secretKey";

    /**
     * 生成JWT令牌
     * @param claims 自定义声明
     * @return JWT令牌
     */
    public static String createJWT(Map<String, Object> claims) {

        return JWT.create()
                .withClaim("claims", claims)
                .withExpiresAt(new java.util.Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24*7))
                .sign(Algorithm.HMAC256(KEY));
    }


    /**
     * 验证JWT令牌
     * @param token JWT令牌
     * @return 自定义声明
     */
    public static Map<String, Object> verifyJWT(String token) {
        return JWT.require(Algorithm.HMAC256(KEY))//指定签名算法
                .build()//创建验证器
                .verify(token)//验证令牌
                .getClaim("claims")//获取自定义声明
                .asMap();
    }

}


